package com.xuecheng.checkcode.service.impl;

import com.xuecheng.checkcode.model.CheckCodeParamsDto;
import com.xuecheng.checkcode.model.CheckCodeResultDto;
import com.xuecheng.checkcode.service.SendCheckCodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class SendCheckCodeServiceImpl implements SendCheckCodeService {

    @Autowired
    private NumCheckCodeServiceImpl numCheckCodeService;

    /**
     * 给手机发送验证码
     * @param checkCodeParamsDto
     * @return
     */
    @Override
    public CheckCodeResultDto sendCheckCodeByPhone(CheckCodeParamsDto checkCodeParamsDto) {

        // 获取参数1，手机号或邮箱
        String param1 = checkCodeParamsDto.getParam1();
        // 生成验证码
        CheckCodeResultDto checkCodeResultDto = numCheckCodeService.generate(checkCodeParamsDto);
        // 给手机或邮箱发送验证码，这里直接控制台打印
        // 定义手机号码的正则表达式
        String regexPhone = "1[3-9]\\d{9}";
        // 定义邮箱的正则表达式
        String regexEmail = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
        if(param1.matches(regexPhone)) {
            System.out.println("给手机号码为: " + param1 + "发送验证码: " + checkCodeResultDto.getAliasing());
        } else if(param1.matches(regexEmail)) {
            System.out.println("给邮箱为: " + param1 + ",发送验证码: " + checkCodeResultDto.getAliasing());
        }

        return checkCodeResultDto;
    }
}
